/* 
 * Cashbox is the legal property of its developers, whose names are listed in the copyright file included
 * with this source distribution.
 * 
 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
 * General Public License as published by the Free Software Foundation; either version 2 of the License,
 * or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
 * Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with this program; if not,
 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#import <Cashbox/CBObject.h>

@class CBAccount;
@interface CBImportAccount : CBObject {
	NSString *name;
	id <NSObject>reference;
	BOOL import;
	Class createAccount;
	CBAccount *mergeAccount;
	NSArray *keys;
	NSArray *possibleTypes;
	NSArray *possibleAccounts;
}

+ (CBImportAccount *)importAccountWithName:(NSString *)name keys:(NSArray *)keys reference:(id <NSObject>)reference;

- (NSString *)name;
- (void)setName:(NSString *)name;

- (NSArray *)keys; 
- (void)setKeys:(NSArray *)keys;

- (id <NSObject>)reference;
- (void)setReference:(id <NSObject>)reference;

- (BOOL)import;
- (void)setImport:(BOOL)flag;

// the create account, if specified, specifies
// that transactions associated with this account
// will be added to this new account that has
// a type (attribute set) specified by type,
// setting this value invalidates mergeAccount
- (Class)createAccount;
- (void)setCreateAccount:(Class)accountType;

// returns an array of attribute sets that the account can use
// based on the keys that have been set
- (NSArray *)possibleTypes;

// the merge account, if specified, specifies
// that transactions associated with this account
// will be merged with the existing account.
// setting this value invalidates createType
- (CBAccount *)mergeAccount;
- (void)setMergeAccount:(CBAccount *)mergeAccount;

// returns an array of accounts that the account can be merged into
// based on the keys that have been set
- (NSArray *)possibleAccounts;

@end
